home *** CD-ROM | disk | FTP | other *** search
/ 64'er / 64ER_CD.iso / sh1x / sh19.d64 / simplex 64 v.16 (.txt) < prev    next >
Commodore BASIC  |  1995-03-30  |  6KB  |  322 lines

  1. 100 REM ****************************
  2. 110 REM *                          *
  3. 120 REM *        SIMPLEX 64        *
  4. 130 REM *                          *
  5. 140 REM *            BY            *
  6. 150 REM *                          *
  7. 160 REM *         M. BUHTZ         *
  8. 170 REM *                          *
  9. 180 REM *       GRAFENRING 13      *
  10. 190 REM *        4230 WESEL        *
  11. 200 REM *      TEL.:0281/22431     *
  12. 210 REM *                          *
  13. 220 REM ****************************
  14. 230 :
  15. 240 PRINT"[147]     SIMPLEX 64[146]":PRINT:PRINT
  16. 250 PRINT"   80 ZEICHENKARTE ? (J/N)"
  17. 260 GETA$
  18. 270 IFA$="J"THEN W=5:GOTO300
  19. 280 IFA$="N"THEN W=1:GOTO300
  20. 290 GOTO260
  21. 300 PRINT:PRINT:PRINT
  22. 310 PRINT"   DRUCKERAUSGABE ? (J/N)":PRINT
  23. 320 GETA$
  24. 330 IFA$="N"THEN410
  25. 340 IFA$="J"THENE1=1:GOTO360
  26. 350 GOTO320
  27. 360 PRINT"   ALLE LOESUNGEN ? (1)":PRINT
  28. 370 PRINT"   NUR OPTIMUM ?    (2)"
  29. 380 GETE$
  30. 390 IFE$<>"1"ANDE$<>"2"THEN380
  31. 400 IFE$="2"THENE1=2
  32. 410 PRINT"[147]     SIMPLEX 64[146]":PRINT:PRINT:PRINT:PRINT
  33. 420 INPUT"   ANZAHL STRUKTURVARIABLEN ";N
  34. 430 PRINT
  35. 440 INPUT"   ANZAHL RESTRIKTIONEN ";M
  36. 450 M=M+1
  37. 460 PRINT"[147]    SIMPLEX 64[146]":PRINT:PRINT:PRINT:PRINT
  38. 470 DIM A(M,N),B(M,N),E(M),X$(N),X1$(N),Y$(M),Y1$(M)
  39. 480 PRINT"   FREIE STRUKTURVARIABLEN ? (J/N)"
  40. 490 GETA$
  41. 500 IFA$="J"THENDIM SP$(N) :GOTO 530
  42. 510 IFA$="N"THEN610
  43. 520 GOTO490
  44. 530 :
  45. 540 PRINT"[147]    FREIE STRUKTURVARIABLEN[146]":PRINT
  46. 550 FORI=1TON
  47. 560 PRINT"   IN SPALTE"I"? (J/N)"
  48. 570 GETA$
  49. 580 IFA$=""THEN570
  50. 590 IFA$="J"THENSP$(I)="J"
  51. 600 NEXTI
  52. 610 :
  53. 620 PRINT"[147]    SIMPLEX 64[146]":PRINT:PRINT:PRINT:PRINT
  54. 630 PRINT"   GESPERRTE SCHLUPFVARIABLEN ? (J/N)"
  55. 640 GETA$
  56. 650 IFA$="J"THENDIMZ$(M):GOTO680
  57. 660 IFA$="N"THEN770
  58. 670 GOTO640
  59. 680 :
  60. 690 PRINT"[147]    GESPERRTE SCHLUPFVARIABLEN[146]":PRINT
  61. 700 FORI=1TOM-1
  62. 710 PRINT"   IN ZEILE"I"? (J/N)"
  63. 720 GETA$
  64. 730 IFA$=""THEN720
  65. 740 IFA$="J"THENZ$(I)="J"
  66. 750 NEXTI
  67. 760 :
  68. 770 REM *** EINGABE KOEFFIZIENTEN ***
  69. 780 :
  70. 790 FORI1=1TONSTEPW+1
  71. 800 PRINT"[147]"
  72. 810 PRINT,"*** SIMPLEX TABLEAU ***" :PRINT
  73. 820 X$(0)="RS "
  74. 830 PRINT,
  75. 840 I2=I1+W
  76. 850 IFI2>=NTHENI2=N
  77. 860 FORI=I1TOI2
  78. 870 X$(I)="X":X1$(I)=STR$(I):X$(I)=X$(I)+X1$(I)
  79. 880 PRINT"X"I,
  80. 890 NEXTI
  81. 900 IFI>NTHENPRINT"RS ",
  82. 910 J1=J2+1
  83. 920 J2=J1+W
  84. 930 IFJ2>=NTHENJ2=N
  85. 940 PRINT
  86. 950 FORI=0TOM-1
  87. 960 Y$(I)="Y":Y1$(I)=STR$(I):Y$(I)=Y$(I)+Y1$(I)
  88. 970 IFI=0THENPRINT:PRINT;"  Z";:GOTO1000
  89. 980 IFI=1THENPRINT
  90. 990 PRINT:PRINT;"Y"I;
  91. 1000 FORJ=J1TOJ2
  92. 1010 PRINT,;:POKE19,1:INPUTA(I,J):POKE19,0
  93. 1020 NEXTJ
  94. 1030 IFJ>NTHENPRINT,"";:POKE19,1:INPUTA(I,0):POKE19,0
  95. 1040 NEXTI
  96. 1050 NEXTI1
  97. 1060 IFE1<>0THENGOSUB2790
  98. 1070 :
  99. 1080 REM*** PHASE 0' S(SPALTE) ***
  100. 1090 :
  101. 1100 FORI=1TON
  102. 1110 IFSP$(I)="J"THENS=I:SP$(I)="S":GOTO1170
  103. 1120 NEXTI
  104. 1130 GOTO1220
  105. 1140 :
  106. 1150 REM*** PHASE 0' R(ZEILE) ***
  107. 1160 :
  108. 1170 R=INT(RND(1)*M)+1:T=T+1
  109. 1180 IFZ$(R)="S"ORA(R,S)=0THEN1170
  110. 1190 IFT>100THEN2440
  111. 1200 T=0:GOTO1850
  112. 1210 :
  113. 1220 REM*** PHASE 0 R(ZEILE) ***
  114. 1230 :
  115. 1240 FORI=1TOM-1
  116. 1250 IFZ$(I)="J"THENR=I:Z$(I)="S":GOTO1310
  117. 1260 NEXTI
  118. 1270 GOTO1360
  119. 1280 :
  120. 1290 REM*** PHASE 0 S(SPALTE) ***
  121. 1300 :
  122. 1310 S=INT(RND(1)*N)+1:T=T+1
  123. 1320 IFSP$(S)="S"ORA(R,S)=0THEN1310
  124. 1330 IFT>100THEN2530
  125. 1340 T=0:GOTO1850
  126. 1350 :
  127. 1360 REM *** PHASE 1 R(ZEILE) ***
  128. 1370 :
  129. 1380 S=0:R=0
  130. 1390 FORI=1TOM-1
  131. 1400 IFA(I,0)<0THENR=I:GOTO1450
  132. 1410 NEXTI:GOTO1520
  133. 1420 :
  134. 1430 REM*** PHASE 1 S(SPALTE) ***
  135. 1440 :
  136. 1450 S=INT(RND(1)*N)+1:T=T+1
  137. 1460 IFT>100THEN2620
  138. 1470 IFA(R,S)>=0THEN1450
  139. 1480 IFR<>0THENT=0:GOTO 1850
  140. 1490 :
  141. 1500 REM *** PHASE 2 S(SPALTE) ***
  142. 1510 :
  143. 1520 S=0:R=0
  144. 1530 IFA(0,1)<0THENS=1
  145. 1540 FORJ=2TON
  146. 1550 IFA(0,J)>=0 OR  A(0,J)>A(0,J-1) THEN 1570
  147. 1560 S=J
  148. 1570 NEXT J
  149. 1580 IFS>0THEN1710
  150. 1590 EE=1
  151. 1600 IFE1=2THENGOSUB2800
  152. 1610 PRINT
  153. 1620 PRINT" **** RECHNUNG BEENDET ****"
  154. 1630 PRINT" ****      OPTIMUM     ****"
  155. 1640 IFE1=0THEN1670
  156. 1650 OPEN4,4:PRINT#4:PRINT#4,CHR$(16)"11**** RECHNUNG BEENDET ****"
  157. 1660 PRINT#4,CHR$(16)"11****      OPTIMUM     ****":PRINT#4:CLOSE4
  158. 1670 GETA$
  159. 1680 IFA$<>""THEN2070
  160. 1690 GOTO1670
  161. 1700 :
  162. 1710 REM *** PHASE 2 R(ZEILE) ***
  163. 1720 :
  164. 1730 FORI=1TOM-1
  165. 1740 IFA(I,S)<=0THENE(I)=10^38:GOTO1760
  166. 1750 E(I)=A(I,0)/A(I,S)
  167. 1760 NEXTI
  168. 1770 IFE(1)>0THENR=1:GOTO1790
  169. 1780 E(1)=10^38
  170. 1790 FORI=2TOM-1
  171. 1800 IFE(I)<=0 OR E(I)>=E(I-1)THEN 1820
  172. 1810 R=I:GOTO1850
  173. 1820 NEXTI
  174. 1830 IFR<>1THEN2710
  175. 1840 :
  176. 1850 REM *** UMRECHNUNG ***
  177. 1860 :
  178. 1870 ZW$=X$(S):X$(S)=Y$(R):Y$(R)=ZW$
  179. 1880 B(R,S)=1/A(R,S)
  180. 1890 :
  181. 1900 FORJ=0TON
  182. 1910 IFJ=STHEN1930
  183. 1920 B(R,J)=A(R,J)/A(R,S)
  184. 1930 NEXTJ
  185. 1940 :
  186. 1950 FORI=0TOM-1
  187. 1960 IFI=RTHEN1980
  188. 1970 B(I,S)=-A(I,S)/A(R,S)
  189. 1980 NEXTI
  190. 1990 :
  191. 2000 FORI=0TOM-1
  192. 2010 FORJ=0TON
  193. 2020 IFJ=S OR I=RTHEN2040
  194. 2030 B(I,J)=A(I,J)-A(I,S)*B(R,J)
  195. 2040 NEXTJ
  196. 2050 NEXTI
  197. 2060 :
  198. 2070 REM *** UMGERECHNETES SIMPLEX TABLEAU ***
  199. 2080 :
  200. 2090 IT=IT+1
  201. 2100 I1=0:I2=0:J1=0:J2=0
  202. 2110 FORI1=1TONSTEPW+1
  203. 2120 IFN<=W+1THEN2130
  204. 2130 PRINT"[147]"
  205. 2140 PRINT"   *** SIMPLEX TABLEAU "IT"[157].ITERATION ***":PRINT
  206. 2150 PRINT,
  207. 2160 I2=I1+W
  208. 2170 IFI2=>NTHENI2=N
  209. 2180 FORI=I1TOI2
  210. 2190 PRINTX$(I),
  211. 2200 NEXTI
  212. 2210 IFI>NTHENPRINTX$(0)
  213. 2220 J1=J2+1
  214. 2230 J2=J1+W
  215. 2240 IFJ2>=NTHENJ2=N
  216. 2250 FORI=0TOM-1
  217. 2260 PRINT:PRINTY$(I);
  218. 2270 FORJ=J1TOJ2
  219. 2280 A(I,J)=B(I,J)
  220. 2290 A(I,0)=B(I,0)
  221. 2300 PRINT,"";:PRINTINT(A(I,J)*100+.5)/100;
  222. 2310 NEXTJ
  223. 2320 IFJ>NTHENPRINT,"";:PRINTINT(A(I,0)*100+.5)/100
  224. 2330 NEXTI
  225. 2340 IFEE<>1ORI1>=NTHEN2370
  226. 2350 GETA$
  227. 2360 IFA$=""THEN2350
  228. 2370 NEXTI1
  229. 2380 :
  230. 2390 IFE1=1THENGOSUB2790
  231. 2400 GOTO1070
  232. 2410 :
  233. 2420 REM *** MELDUNGEN ***
  234. 2430 :
  235. 2440 PRINT:PRINT" *** RECHNUNG ABGEBROCHEN PHASE 0' ***"
  236. 2450 PRINT" ***   LINEARKOMBINATION SPALTEN   ***"
  237. 2460 IFE1=2THENGOSUB2800
  238. 2470 IFE1=0THENEND
  239. 2480 OPEN4,4:PRINT#4
  240. 2490 PRINT#4,CHR$(16)"11*** RECHNUNG ABGEBROCHEN PHASE 0' ***"
  241. 2500 PRINT#4,CHR$(16)"11***   LINEARKOMBINATION SPALTEN   ***"
  242. 2510 PRINT#4:CLOSE4:END
  243. 2520 :
  244. 2530 PRINT:PRINT" *** RECHNUNG ABGEBROCHEN PHASE 0 ***"
  245. 2540 PRINT" ***   LINEARKOMBINATION ZEILEN   ***"
  246. 2550 IFE1=2THENGOSUB2800
  247. 2560 IFE1=0THENEND
  248. 2570 OPEN4,4:PRINT#4
  249. 2580 PRINT#4,CHR$(16)"11*** RECHNUNG ABGEBROCHEN PHASE 0 ***"
  250. 2590 PRINT#4,CHR$(16)"11***   LINEARKOMBINATION ZEILEN   ***"
  251. 2600 PRINT#4:CLOSE4:END
  252. 2610 :
  253. 2620 PRINT:PRINT" *** RECHNUNG ABGEBROCHEN PHASE 1 ***"
  254. 2630 PRINT" ***   KEINE ZULAESSIGE LOESUNG   ***"
  255. 2640 IFE1=2THENGOSUB2800
  256. 2650 IFE1=0THENEND
  257. 2660 OPEN4,4:PRINT#4
  258. 2670 PRINT#4,CHR$(16)"11*** RECHNUNG ABGEBROCHEN PHASE 1 ***"
  259. 2680 PRINT#4,CHR$(16)"11***   KEINE ZULAESSIGE LOESUNG   ***":PRINT#4:CLOSE4:END
  260. 2690 PRINT#4:CLOSE4:END
  261. 2700 :
  262. 2710 PRINT:PRINT" *** RECHNUNG ABGEBROCHEN PHASE 2 ***"
  263. 2720 PRINT" ***   KEINE BEGRENZTE LOESUNG    ***"
  264. 2730 IFE1=2THENGOSUB2800
  265. 2740 IFE1=0THENEND
  266. 2750 OPEN4,4:PRINT#4
  267. 2760 PRINT#4,CHR$(16)"11*** RECHNUNG ABGEBROCHEN PHASE 2 ***"
  268. 2770 PRINT#4,CHR$(16)"11***   KEINE BEGRENZTE LOESUNG    ***":PRINT#4:CLOSE4:END
  269. 2780 PRINT#4:CLOSE4:END
  270. 2790 :
  271. 2800 REM *** DRUCKERAUSGABE ***
  272. 2810 :
  273. 2820 OPEN4,4
  274. 2830 I2=0:J1=0:J2=0
  275. 2840 FORI1=1TONSTEP4
  276. 2850 PRINT#4,CHR$(10)
  277. 2860 PRINT#4,CHR$(16)"10*** SIMPLEX TABLEAU"IT".ITERATION ***"
  278. 2870 PRINT#4
  279. 2880 I2=I1+3
  280. 2890 IFI2>=NTHENI2=N
  281. 2900 Z=0
  282. 2910 FORI=I1TOI2
  283. 2920 Z=Z+1
  284. 2930 ONZGOSUB3260,3270,3280,3290,3300
  285. 2940 :
  286. 2950 NEXTI
  287. 2960 IFI<=NTHEN2990
  288. 2970 I=0:Z=Z+1
  289. 2980 ONZGOSUB3260,3270,3280,3290,3300
  290. 2990 J1=J2+1
  291. 3000 J2=J1+3
  292. 3010 IFJ2>=NTHENJ2=N
  293. 3020 PRINT#4
  294. 3030 FORI=0TOM-1
  295. 3040 IFI=0THENPRINT#4:PRINT#4,"  Z",:GOTO3070
  296. 3050 IFI=1THENPRINT#4
  297. 3060 PRINT#4:PRINT#4,Y$(I),
  298. 3070 Z=0
  299. 3080 FORJ=J1TOJ2
  300. 3090 IFIT=0THEN3120
  301. 3100 A(I,J)=B(I,J)
  302. 3110 A(I,0)=B(I,0)
  303. 3120 Z=Z+1
  304. 3130 ONZGOSUB3210,3220,3230,3240,3250
  305. 3140 NEXTJ
  306. 3150 IFJ<=NTHEN3180
  307. 3160 J=0:Z=Z+1
  308. 3170 ONZGOSUB3210,3220,3230,3240,3250
  309. 3180 NEXTI
  310. 3190 NEXTI1
  311. 3200 PRINT#4:CLOSE4:RETURN
  312. 3210 PRINT#4,CHR$(16)"13"INT(A(I,J)*100+.5)/100;:RETURN
  313. 3220 PRINT#4,CHR$(16)"26"INT(A(I,J)*100+.5)/100;:RETURN
  314. 3230 PRINT#4,CHR$(16)"39"INT(A(I,J)*100+.5)/100;:RETURN
  315. 3240 PRINT#4,CHR$(16)"52"INT(A(I,J)*100+.5)/100;:RETURN
  316. 3250 PRINT#4,CHR$(16)"65"INT(A(I,J)*100+.5)/100;:RETURN
  317. 3260 PRINT#4,CHR$(16)"14"X$(I);:RETURN
  318. 3270 PRINT#4,CHR$(16)"27"X$(I);:RETURN
  319. 3280 PRINT#4,CHR$(16)"40"X$(I);:RETURN
  320. 3290 PRINT#4,CHR$(16)"53"X$(I);:RETURN
  321. 3300 PRINT#4,CHR$(16)"66"X$(I);:RETURN
  322.